Network bandwidth is a key factor affecting the quality of video streaming services. In various peer-to-peer (P2P) applications, such as, multimedia live streaming, real-time communication, file transmission, etc., the nodes with insufficient upload bandwidth are unable to share data to other nodes. If the upload bandwidth of each node can be fully utilized, the costs of both system deployment and network bandwidth may be reduced. In multimedia streaming service applications, the network nodes simultaneously perform of stream data uploading and downloading, that is, to receive stream data from a stream source and exchange the stream data with other nodes. The scheme of data exchange depends on the network topology formed among the nodes. Some of the main P2P network topologies are tree-based, mesh-based, and cluster-based.
The tree-based P2P network topology may be divided into single-tree topology and multi-tree topology. The single-tree topology uses the stream source as the root node. Each node receives stream data from its parent node and pushes data to its child nodes. The maximum number of child nodes is determined by the upload bandwidth of the node. In the single-tree topology, a leaf node has no child node, and therefore cannot contribute its upload bandwidth, which reduces the overall bandwidth utilization of the system. The multi-tree topology solves the bandwidth waste of the leaf nodes in the single-tree topology. In the multi-tree topology, the root node divides the stream data into a plurality of sub-streams, and each sub-stream is pushed to all nodes through different sub-tree. Each node is added to all the sub-trees and acts as an internal node or a leaf node in each of the sub-trees, thereby each node may contribute its upload bandwidth. In the multi-tree topology, any node leaving the network may change the topologies of all sub-trees. The nodes connected to this node in each sub-tree are re-connected to other nodes. In general, the tree-based topology is suitable for delay-sensitive applications for smaller transmission delay.
In the mesh P2P network topology, the nodes exchange data in a pull manner. When a node is added to a streaming network, the node obtains a list of some nodes from the server, such as tracker, and establishes a neighboring relationship and exchanges buffer map (BM) information with these nodes. The BM information records the information of stream data chunks kept in a node so far. As such, the node may determine which neighboring nodes own the data chunks, and may use a scheduling mechanism to request required data chunks from the neighboring nodes. In the mesh P2P network topology, each node may have an opportunity to contribute its upload bandwidth, and when a neighboring node leaves the network, each node may still receive stream data from other neighboring nodes. Since every node in the mesh topology may request data chunks from different nodes, the data chunks are not necessarily arriving the node in order. This may cause apparent data transmission delay in mesh topology networks. In general, mesh topology is suitable for network environments with frequent changes of member nodes.
In the cluster-based P2P network topology, the nodes in the network are divided into a plurality of clusters. Each cluster includes one or more nodes. Each cluster has a node acting as a cluster head. The stream data is aggregated by the cluster head or some designated cluster node from stream source or other cluster nodes, and then distribute to other nodes in the cluster. The connection among the cluster heads and the connection among the nodes within a cluster may use either tree-based topology or mesh topology. In the cluster-based topology, the impact of the node joining or leaving a network on the load balance, the selection of the cluster head, and optimal number of nodes in a cluster are all research issues.
Some researches on stream data propagation combine the aforementioned push and pull approaches. When a node joins a streaming network, the node uses a pull approach to request stream data from the neighboring nodes. After that, the node selects a neighboring node as a parent node and the selected parent node pushes the stream data to the node to achieve the real-time feature in the stream data propagation. When the node misses a stream data because of packet loss, the node uses the pull approach again to request the stream data from its neighboring node.
Some of the known P2P network technologies use sub-stream scheduling method to alleviate the waste of upload bandwidth in sharing data. The sub-stream scheduling method divides the stream into k sub-streams of the same size and distributes the k sub-streams to the P2P network. Each neighboring node may own a plurality of different sub-streams, and each sub-stream includes different stream data chunks. For example, the first sub-stream includes the 1st, the (k+1)th, the (2k+1)th, the (3k+1)th, . . . , etc., chunks; the second sub-stream includes the 2nd, the (k+2)th, the (2k+2)th, the (3k+2)th, . . . , etc., chunks; and the k-th sub-stream includes the kth, the (2k)th, the (3k)th, the (4k)th, . . . etc., chunks, and so on. A node selects some suitable nodes from these neighboring nodes (such as, the neighboring nodes with a minimum delay and a maximum match) to receive all the sub-streams to merge into a complete stream. The above method performs a rescheduling mechanism when the neighboring nodes are unable to provide sufficient sub-streams. A key point in the scheduling design is to determine the value of k. When k is too small, the nodes may not be able to completely contribute their upload bandwidth; while when k is too large, the computation complexity of the sub-stream scheduling mechanism is increased.